home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1996 #6 / Amiga Plus CD - 1996 - No. 06.iso / pd / programmierung / proasm / routines / gtfmacros.r < prev    next >
Text File  |  1995-10-16  |  20KB  |  1,083 lines

  1.  
  2. ;---;  gtfmacros.r  ;----------------------------------------------------------
  3. *
  4. *    ****    MACROS FOR GTFACE: GADGETS AND MENUS    ****
  5. *
  6. *    Author        Stefan Walter
  7. *    Version        1.09
  8. *    Last Revision    16.10.95
  9. *    Identifier    gfm_defined
  10. *    Prefix        gfm_    (GTFace Macros)
  11. *                 ¯ ¯    ¯
  12. ;------------------------------------------------------------------------------
  13.  
  14. ;------------------
  15.     IFND    gfm_defined
  16. gfm_defined    =1
  17.  
  18. ;------------------
  19.     include    gtfdefs.r
  20.     include    stringmacros.r
  21.  
  22. ;------------------
  23.  
  24.     IFGT    __PRO,119
  25.     FAILAT    1
  26.     FAIL    *** ProAsm version 0.77 or higher required! ***
  27.     ENDC
  28.  
  29.  
  30. ;------------------------------------------------------------------------------
  31. *
  32. * BeginGList_    Begin a gadget list.
  33. *
  34. * USAGE:    BeginGList_    name
  35. *
  36. ;------------------------------------------------------------------------------
  37.  
  38. BeginGList_    MACRO
  39. gtf_IDCMP    SET    0
  40. gtf_NUMOF    SET    0
  41. gtf_GOTONE    SET    0
  42.     IFND    gtf_IDCOUNTER
  43. gtf_IDCOUNTER    SET    0
  44.     ENDIF
  45.  
  46.     dc.l    gtf_NUMOF_\1
  47.     dc.l    gtf_NEEDSIDCMP_\1
  48.     ENDM
  49.  
  50.  
  51.  
  52. ;------------------------------------------------------------------------------
  53. *
  54. * SetIDCounter_    Sets the ID counter for gadgets and menus.
  55. *
  56. * USAGE:    SetIDCounter_    firstIDnumber
  57. *         SetMIDCounter_    firstIDnumber for menu
  58. *
  59. ;------------------------------------------------------------------------------
  60.  
  61. SetIDCounter_    MACRO
  62. gtf_IDCOUNTER    SET    \1
  63.     ENDM
  64.  
  65.  
  66. SetMIDCounter_    MACRO
  67. gtf_MENUID    SET    \1
  68.     ENDM
  69.  
  70.  
  71.  
  72. ;------------------------------------------------------------------------------
  73. *
  74. * Gadget_    Init for new gadget.
  75. *
  76. * USAGE:    Gadget_ kind,IDsymbol,xpos,ypos,width,heigth
  77. *
  78. ;------------------------------------------------------------------------------
  79.  
  80. Gadget_    MACRO
  81.     EndGadget_
  82. gtf_OBJECT    SET    0
  83. gtf_DEFBITS    SET    0
  84. gtf_TEXTPTR    SETR    0
  85. gtf_TAGFLAGS    SET    0
  86. gtf_FLAGS    SET    0
  87. gtf_GOTONE    SET    1        ;we have a gadget to define
  88.  
  89. gtf_WORDARGS    SET    0
  90. gtf_LONGARGS    SET    0
  91.  
  92. gtf_KIND    SET    \1_KIND
  93. \2        EQU    gtf_IDCOUNTER
  94. gtf_ID        SET    gtf_IDCOUNTER
  95. gtf_IDCOUNTER    SET    gtf_IDCOUNTER+1
  96. gtf_X        SET    \3
  97. gtf_Y        SET    \4
  98. gtf_WIDTH    SET    \5
  99. gtf_HEIGTH    SET    \6
  100.  
  101.     IFEQ    gtf_KIND,BUTTON_KIND
  102. gtf_IDCMP    SET    gtf_IDCMP|IDCMP_GADGETUP
  103.     ENDIF
  104.  
  105.     IFEQ    gtf_KIND,CHECKBOX_KIND
  106. gtf_IDCMP    SET    gtf_IDCMP|IDCMP_GADGETUP
  107.     ENDIF
  108.  
  109.     IFEQ    gtf_KIND,INTEGER_KIND
  110. ;gtf_X        SET    gtf_X+4    ;+(gtf_WIDTH\8)/2
  111. ;gtf_Y        SET    gtf_Y+2
  112. ;gtf_WIDTH    SET    gtf_WIDTH-8    ;-(gtf_WIDTH\8)
  113. ;gtf_HEIGTH    SET    gtf_HEIGTH-4
  114. gtf_IDCMP    SET    gtf_IDCMP|IDCMP_GADGETUP
  115.     ENDIF
  116.  
  117.     IFEQ    gtf_KIND,LISTVIEW_KIND
  118. gtf_IDCMP    SET    gtf_IDCMP|IDCMP_GADGETUP|IDCMP_GADGETDOWN
  119. gtf_IDCMP    SET    gtf_IDCMP|IDCMP_INTUITICKS|IDCMP_MOUSEBUTTONS
  120. gtf_IDCMP    SET    gtf_IDCMP|IDCMP_MOUSEMOVE
  121. gtf_WIDTH    SET    gtf_WIDTH&$fffffff8
  122.     ENDIF
  123.  
  124.     IFEQ    gtf_KIND,MX_KIND
  125. gtf_IDCMP    SET    gtf_IDCMP|IDCMP_GADGETDOWN
  126. gtf_WIDTH    SET    17
  127. gtf_HEIGTH    SET    9
  128.     ENDIF
  129.  
  130.     IFEQ    gtf_KIND,SLIDER_KIND
  131. gtf_IDCMP    SET    gtf_IDCMP|IDCMP_GADGETDOWN|IDCMP_MOUSEMOVE|IDCMP_GADGETUP
  132. gtf_LONGARGS    SET    gtf_LONGARGS|1
  133. gtf_ARG1    SET    LORIENT_HORIZ
  134.     ENDIF
  135.  
  136.     IFEQ    gtf_KIND,CYCLE_KIND
  137. gtf_IDCMP    SET    gtf_IDCMP|IDCMP_GADGETUP
  138.     ENDIF
  139.  
  140.     IFEQ    gtf_KIND,STRING_KIND
  141. ;gtf_X        SET    gtf_X+4    ;+(gtf_WIDTH\\8)/2
  142. ;gtf_Y        SET    gtf_Y+2
  143. ;gtf_WIDTH    SET    gtf_WIDTH-8    ;-(gtf_WIDTH\\8)
  144. ;gtf_HEIGTH    SET    gtf_HEIGTH-4
  145. gtf_IDCMP    SET    gtf_IDCMP|IDCMP_GADGETUP
  146.     ENDIF
  147.  
  148.     ENDM
  149.  
  150.  
  151.  
  152. ;------------------------------------------------------------------------------
  153. *
  154. * Text*_    Give text pointer and specify where to put it.
  155. *
  156. * USAGE:    Text*_ "text"|label|0
  157. *
  158. ;------------------------------------------------------------------------------
  159.  
  160. TextIn_    MACRO
  161.     IFC    '\*L(\1,1)','"'
  162.     AddString_    \1,gtf_gadgets,gtf_TEXTPTR
  163.     ELSE
  164. gtf_TEXTPTR    SETR    \1
  165.     ENDIF
  166. gtf_FLAGS    SET    gtf_FLAGS|$10
  167.     ENDM
  168.  
  169. TextLeft_    MACRO
  170.     IFC    '\*L(\1,1)','"'
  171.     AddString_    \1,gtf_gadgets,gtf_TEXTPTR
  172.     ELSE
  173. gtf_TEXTPTR    SETR    \1
  174.     ENDIF
  175. gtf_FLAGS    SET    gtf_FLAGS|$1
  176.     ENDM
  177.  
  178. TextRight_    MACRO
  179.     IFC    '\*L(\1,1)','"'
  180.     AddString_    \1,gtf_gadgets,gtf_TEXTPTR
  181.     ELSE
  182. gtf_TEXTPTR    SETR    \1
  183.     ENDIF
  184. gtf_FLAGS    SET    gtf_FLAGS|$2
  185.     ENDM
  186.  
  187. TextAbove_    MACRO
  188.     IFC    '\*L(\1,1)','"'
  189.     AddString_    \1,gtf_gadgets,gtf_TEXTPTR
  190.     ELSE
  191. gtf_TEXTPTR    SETR    \1
  192.     ENDIF
  193. gtf_FLAGS    SET    gtf_FLAGS|$4
  194.     ENDM
  195.  
  196. TextBelow_    MACRO
  197.     IFC    '\*L(\1,1)','"'
  198.     AddString_    \1,gtf_gadgets,gtf_TEXTPTR
  199.     ELSE
  200. gtf_TEXTPTR    SETR    \1
  201.     ENDIF
  202. gtf_FLAGS    SET    gtf_FLAGS|$8
  203.     ENDM
  204.  
  205.  
  206.  
  207. ;------------------------------------------------------------------------------
  208. *
  209. * EndGadget_    Create the gadget data.
  210. *
  211. * USAGE:    EndGadget_
  212. *
  213. ;------------------------------------------------------------------------------
  214.  
  215. EndGadget_    MACRO
  216.     IFNE    gtf_GOTONE
  217.  
  218. ;------------------
  219.  
  220.     IFEQ    gtf_OBJECT
  221.  
  222.     dc.w    gtf_KIND
  223.     dc.w    gtf_X
  224.     dc.w    gtf_Y
  225.     dc.w    gtf_WIDTH
  226.     dc.w    gtf_HEIGTH
  227.     dc.l    gtf_TEXTPTR
  228.     dc.w    gtf_ID
  229.     dc.w    gtf_FLAGS
  230.     dc.w    gtf_TAGFLAGS
  231.  
  232.     IFNE    gtf_WORDARGS&1
  233.     dc.w    gtf_ARG1
  234.     ENDIF
  235.     IFNE    gtf_LONGARGS&1
  236.     dc.l    gtf_ARG1
  237.     ENDIF
  238.  
  239.     IFNE    gtf_WORDARGS&2
  240.     dc.w    gtf_ARG2
  241.     ENDIF
  242.     IFNE    gtf_LONGARGS&2
  243.     dc.l    gtf_ARG2
  244.     ENDIF
  245.  
  246.     IFNE    gtf_WORDARGS&4
  247.     dc.w    gtf_ARG3
  248.     ENDIF
  249.     IFNE    gtf_LONGARGS&4
  250.     dc.l    gtf_ARG3
  251.     ENDIF
  252.  
  253.     IFNE    gtf_WORDARGS&8
  254.     dc.w    gtf_ARG4
  255.     ENDIF
  256.     IFNE    gtf_LONGARGS&8
  257.     dc.l    gtf_ARG4
  258.     ENDIF
  259.  
  260.     IFNE    gtf_WORDARGS&16
  261.     dc.w    gtf_ARG5
  262.     ENDIF
  263.     IFNE    gtf_LONGARGS&16
  264.     dc.l    gtf_ARG5
  265.     ENDIF
  266.  
  267.     IFNE    gtf_WORDARGS&32
  268.     dc.w    gtf_ARG6
  269.     ENDIF
  270.     IFNE    gtf_LONGARGS&32
  271.     dc.l    gtf_ARG6
  272.     ENDIF
  273.  
  274.     IFNE    gtf_WORDARGS&64
  275.     dc.w    gtf_ARG7
  276.     ENDIF
  277.     IFNE    gtf_LONGARGS&64
  278.     dc.l    gtf_ARG7
  279.     ENDIF
  280.  
  281.     IFNE    gtf_WORDARGS&128
  282.     dc.w    gtf_ARG8
  283.     ENDIF
  284.     IFNE    gtf_LONGARGS&128
  285.     dc.l    gtf_ARG8
  286.     ENDIF
  287.  
  288.     IFNE    gtf_WORDARGS&256
  289.     dc.w    gtf_ARG9
  290.     ENDIF
  291.     IFNE    gtf_LONGARGS&256
  292.     dc.l    gtf_ARG9
  293.     ENDIF
  294.  
  295.     IFNE    gtf_WORDARGS&512
  296.     dc.w    gtf_ARG10
  297.     ENDIF
  298.     IFNE    gtf_LONGARGS&512
  299.     dc.l    gtf_ARG10
  300.     ENDIF
  301.  
  302.     ENDIF
  303.  
  304. ;------------------
  305.  
  306.     ifmi    gtf_OBJECT
  307.  
  308.     dc.w    -1
  309.     dc.b    -1
  310.     dc.b    gtf_RECESSED
  311.     dc.w    gtf_X
  312.     dc.w    gtf_Y
  313.     dc.w    gtf_WIDTH
  314.     dc.w    gtf_HEIGTH
  315.     dc.w    gtf_FILLED
  316.  
  317.     ENDIF
  318.  
  319. ;------------------
  320.  
  321.     ifgt    gtf_OBJECT
  322.  
  323.     dc.w    -1
  324.     dc.b    0
  325.     dc.b    gtf_ISPOINTER
  326.     dc.w    gtf_X
  327.     dc.w    gtf_Y
  328.     dc.w    gtf_STYLE
  329.     dc.l    gtf_TEXTPTR
  330.  
  331.     ENDIF
  332.  
  333. ;------------------
  334.  
  335. gtf_GOTONE    SET    0
  336.  
  337.     IFPL    gtf_KIND        ; do not count special wishes...
  338. gtf_NUMOF    SET    gtf_NUMOF+1
  339.     ENDC
  340.  
  341.     ENDIF
  342.     ENDM
  343.  
  344.  
  345.  
  346. ;------------------------------------------------------------------------------
  347. *
  348. * BevelBox_    Create a BevelBox.
  349. *
  350. * USAGE:    BevelBox_ left, top, width, height
  351. *
  352. ;------------------------------------------------------------------------------
  353.  
  354. BevelBox_    MACRO
  355.     EndGadget_
  356.  
  357. gtf_OBJECT    SET    -1
  358.  
  359. gtf_X        SET    \1
  360. gtf_Y        SET    \2
  361. gtf_WIDTH    SET    \3
  362. gtf_HEIGTH    SET    \4
  363.  
  364. gtf_RECESSED    SET    0
  365. gtf_FILLED    SET    -1
  366. gtf_GOTONE    SET    1
  367. gtf_NUMOF    SET    gtf_NUMOF-1    ;no gadget!!!
  368.     ENDM
  369.  
  370.  
  371.  
  372. ;------------------------------------------------------------------------------
  373. *
  374. * WindowText_    Print a one-line text.
  375. *
  376. * USAGE:    WindowText_    left, top, APen, BPen, text
  377. *
  378. ;------------------------------------------------------------------------------
  379.  
  380. WindowText_    MACRO
  381.     EndGadget_
  382.  
  383. gtf_OBJECT    SET    1
  384. gtf_X        SET    \1
  385. gtf_Y        SET    \2
  386. gtf_STYLE    SET    \4*256+\3
  387.  
  388.     IFC    '\*L(\5,1)','"'
  389.     AddString_    \5,gtf_gadgets,gtf_TEXTPTR
  390.     ELSE
  391. gtf_TEXTPTR    SETR    \5
  392.     ENDIF
  393.  
  394. gtf_GOTONE    SET    1
  395. gtf_NUMOF    SET    gtf_NUMOF-1    ;no gadget!!!
  396. gtf_ISPOINTER    SET    0
  397.  
  398.     ENDM
  399.  
  400.  
  401.  
  402. ;------------------------------------------------------------------------------
  403. *
  404. * Patchable variations of the tag MACROS below:
  405. *
  406. * USAGE:    Number_ number,lab    ;Initial number for Integer
  407. *        LVSelectedP_ number,lab    ;Selected entry for ListView (WORD)
  408. *        Labels_ label,lab    ;Labels for Cycle/MX (LONG)
  409. *        Active_ number,lab    ;Number of active text for Cycle/MX (WORD)
  410. *        Text_ label,lab        ;Text for Text (LONG)
  411. *        CheckItPatch_ lab    ;Checked menu (set bit 0!!)
  412. *
  413. ;------------------------------------------------------------------------------
  414.  
  415. NumberPatch_        MACRO
  416.     Number_        \1
  417. \2    EQU    *+20
  418.     ENDM
  419.  
  420.  
  421. LVSelectedPatch_    MACRO
  422.     LVSelected_    \1
  423.     IFNE    gtf_TAGFLAGS&(1<<gtf_b_Labels)
  424. \2    EQU    *+26
  425.     ELSE
  426. \2    EQU    *+22
  427.     ENDC
  428.     ENDM
  429.  
  430.  
  431. LabelsPatch_        MACRO
  432.     Labels_        \1
  433. \2    EQU    *+20
  434.     ENDM
  435.  
  436.  
  437. ActivePatch_        MACRO
  438.     Active_        \1
  439. \2    EQU    *+26
  440.     ENDM
  441.  
  442.  
  443. TextPatch_        MACRO
  444.     Text_        \1
  445. \2    EQU    *+20
  446.     ENDM
  447.  
  448. CheckItPatch_        MACRO
  449.     CheckIt_
  450. \1    EQU    *+10
  451.     ENDM
  452.  
  453.  
  454.  
  455. ;------------------------------------------------------------------------------
  456. *
  457. * Different MACROs to specify some tags and flags.
  458. *
  459. * USAGE:    Highlight_        ;Highlight title
  460. *        Disabled_        ;Disable gadget or menu
  461. *        ToggleSelect_        ;Button kind is a toggle gadget
  462. *        Selected_        ;Gadget initially selected
  463. *        Underscore_        ;Use underscore feature
  464. *        Checked_        ;CheckBox or menu initially checked
  465. *        Number_ number        ;Initial number for Integer
  466. *        MaxChars number        ;Maximum chars for Integer/String
  467. *        RightJustified_        ;Text in Integer/String right adjusted 
  468. *        NoTabCycle_        ;Cycle feature OFF for Integer
  469. *        TabCycle_        ;Cycle feature ON for String
  470. *        LVList_ label        ;Initial list of texts for ListView
  471. *        LVLabels_ symbol    ;Initial list of texts for ListView
  472. *                    ;The macro assings the address of the
  473. *                    ;tag data to the symbol. The main
  474. *                    ;program can then set the list by
  475. *                    ;performing a 'move.l #list,symbol'.
  476. *        ReadOnly_        ;ReadOnly mode for ListView
  477. *        ShowSelected_        ;Show selected entry of ListView
  478. *        LVSelected_ number    ;Selected entry for ListView
  479. *        Labels_ label        ;List of texts for Cycle/MX
  480. *        Active_ number        ;Number of active text for Cycle/MX
  481. *        Spacing_ num        ;Spacing for MX
  482. *        String_ label        ;Default string for String
  483. *        Recessed_        ;BB recessed
  484. *        Raised_            ;BB raised
  485. *        Filled_ num        ;fill BB with pattern and color
  486. *        RelVerify_        ;RelVerify for Slider
  487. *        Min_ num        ;Minimum level for Slider
  488. *        Max_ num        ;Maximum level for Slider
  489. *        Level_ num        ;Initial level of Slider
  490. *        MaxLevelLen_ num    ;Length of number string for Slider
  491. *        LevelFormat ptr        ;RawDoFmt string for Slider
  492. *        LevelPlace_ place    ;Place for number string for Slider
  493. *        DispFunc_        ;Function for Number conversion
  494. *        IsPointer_        ;Text is in fact a pointer
  495. *        Text_ label        ;Text for Text
  496. *        CopyText_        ;Copy text of Text
  497. *        Border_            ;Make a border around Text
  498. *        Toggled_        ;A menu item is toggled
  499. *
  500. *        FlagAddress_ label    ;Assign address of flags to label
  501. *        MenuFlagAddr_ label    ;Assign address of menu flags to label
  502. *
  503. ;------------------------------------------------------------------------------
  504.  
  505. Highlight_    MACRO
  506. gtf_FLAGS    SET    gtf_FLAGS|$20
  507.     ENDM
  508.  
  509. Disabled_    MACRO
  510. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_Disabled
  511. gtf_DISABLED    SET    $10
  512.     ENDM
  513.  
  514. ToggleSelect_    MACRO
  515. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_ToggleSelect
  516.     ENDM
  517.  
  518. Selected_    MACRO
  519. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_Selected
  520.     ENDM
  521.  
  522. Underscore_    MACRO
  523. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_Underscore
  524.     ENDM
  525.  
  526. Checked_    MACRO
  527. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_Checked
  528. gtf_CHECKED    SET    $100
  529.     ENDM
  530.  
  531. Number_        MACRO
  532. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_Number
  533. gtf_LONGARGS    SET    gtf_LONGARGS|1
  534. gtf_ARG1    SET    \1
  535.     ENDM
  536.  
  537. MaxChars_    MACRO
  538. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_MaxChars
  539. gtf_LONGARGS    SET    gtf_LONGARGS|2
  540. gtf_ARG2    SET    \1
  541.     ENDM
  542.  
  543. RightJustified_    MACRO
  544. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_RightJustified
  545.     ENDM
  546.  
  547. NoTabCycle_    MACRO
  548. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_NoTabCycle
  549.     ENDM
  550.  
  551. TabCycle_    MACRO
  552. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_TabCycle
  553.     ENDM
  554.  
  555. LVLabels_        MACRO
  556.     IFNE    gtf_TAGFLAGS&(1<<gtf_b_LVSelected)
  557.     Fail because LVLabels_ must be used before LVSelected_ !!!
  558.     ENDIF
  559. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_Labels
  560. gtf_LONGARGS    SET    gtf_LONGARGS|1
  561. \1        EQU    *+20
  562. gtf_ARG1    SET    0
  563.     ENDM
  564.  
  565. LVList_        MACRO
  566.     IFNE    gtf_TAGFLAGS&(1<<gtf_b_LVSelected)
  567.     Fail because LVList_ must be used before LVSelected_ !!!
  568.     ENDIF
  569. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_Labels
  570. gtf_LONGARGS    SET    gtf_LONGARGS|1
  571. gtf_ARG1    SET    \1
  572.     ENDM
  573.  
  574. ReadOnly_    MACRO
  575. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_ReadOnly
  576.     ENDM
  577.  
  578. ShowSelected_    MACRO
  579. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_ShowSelected
  580.     ENDM
  581.  
  582. LVSelected_    MACRO
  583. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_LVSelected
  584. gtf_LONGARGS    SET    gtf_LONGARGS|2
  585. gtf_ARG2    SET    \1
  586.     ENDM
  587.  
  588. Labels_        MACRO
  589. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_Labels
  590. gtf_LONGARGS    SET    gtf_LONGARGS|1
  591. gtf_ARG1    SET    \1
  592.     ENDM
  593.  
  594. Spacing_    MACRO
  595. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_Spacing
  596. gtf_LONGARGS    SET    gtf_LONGARGS|4
  597. gtf_ARG3    SET    \1
  598.     ENDM
  599.  
  600. Active_    MACRO
  601. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_Active
  602. gtf_LONGARGS    SET    gtf_LONGARGS|2
  603. gtf_ARG2    SET    \1
  604.     ENDM
  605.  
  606. String_        MACRO
  607. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_String
  608. gtf_LONGARGS    SET    gtf_LONGARGS|1
  609.     IFC    '\*L(\1,1)','"'
  610.     AddString_    \1,gtf_gadgets,gtf_ARG1
  611.     ELSE
  612. gtf_ARG1    SETR    \1
  613.     ENDIF
  614.     ENDM
  615.  
  616. EditHook_    MACRO
  617. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_EditHook
  618. gtf_LONGARGS    SET    gtf_LONGARGS|4
  619. gtf_ARG3    SET    \1
  620.     ENDM
  621.  
  622. Recessed_    MACRO
  623. gtf_RECESSED    SET    255
  624.     ENDM
  625.  
  626. Raised_        MACRO
  627. gtf_RECESSED    SET    0
  628.     ENDM
  629.  
  630. Filled_        MACRO
  631. gtf_FILLED    SET    \1
  632.     ENDM
  633.  
  634. IsPointer_    MACRO
  635. gtf_ISPOINTER    SET    255
  636.     ENDM
  637.  
  638. RelVerify_    MACRO
  639. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_RelVerify
  640.     ENDM
  641.  
  642. Min_        MACRO
  643. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_Min
  644. gtf_WORDARGS    SET    gtf_WORDARGS|2
  645. gtf_ARG2    SET    \1
  646.     ENDM
  647.  
  648. Max_        MACRO
  649. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_Max
  650. gtf_WORDARGS    SET    gtf_WORDARGS|4
  651. gtf_ARG3    SET    \1
  652.     ENDM
  653.  
  654. Level_        MACRO
  655. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_Level
  656. gtf_WORDARGS    SET    gtf_WORDARGS|8
  657. gtf_ARG4    SET    \1
  658.     ENDM
  659.  
  660. MaxLevelLen_    MACRO
  661. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_MaxLevelLen
  662. gtf_WORDARGS    SET    gtf_WORDARGS|16
  663. gtf_ARG5    SET    \1
  664.     ENDM
  665.  
  666. LevelFormat_    MACRO
  667. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_LevelFormat
  668. gtf_LONGARGS    SET    gtf_LONGARGS|32
  669.     IFC    '\*L(\1,1)','"'
  670.     AddString_    \1,gtf_gadgets,gtf_ARG6
  671.     ELSE
  672. gtf_ARG6    SETR    \1
  673.     ENDIF
  674.     ENDM
  675.  
  676. LevelPlace_    MACRO
  677. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_LevelPlace
  678. gtf_WORDARGS    SET    gtf_WORDARGS|64
  679. gtf_ARG7    SET    \1
  680.     ENDM
  681.  
  682. DispFunc_    MACRO
  683. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_DispFunc
  684. gtf_LONGARGS    SET    gtf_LONGARGS|128
  685. gtf_ARG8    SET    \1
  686.     ENDM
  687.  
  688. Text_        MACRO
  689. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_Text
  690. gtf_LONGARGS    SET    gtf_LONGARGS|1
  691.     IFC    '\*L(\1,1)','"'
  692.     AddString_    \1,gtf_gadgets,gtf_ARG1
  693.     ELSE
  694. gtf_ARG1    SETR    \1
  695.     ENDIF
  696. ;gtf_ARG1    SET    \1
  697.     ENDM
  698.  
  699. CopyText_        MACRO
  700. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_CopyText
  701.     ENDM
  702.  
  703. Border_        MACRO
  704. gtf_TAGFLAGS    SET    gtf_TAGFLAGS|1<<gtf_b_Border
  705.     ENDM
  706.  
  707. Toggled_        MACRO
  708. gtf_TOGGLED    SET    $8
  709.     ENDM
  710.  
  711. CheckIt_    MACRO
  712. gtf_CHECKIT    SET    $1
  713.     ENDM
  714.  
  715. FlagAddress_    MACRO
  716. \1    EQU    *+18
  717.     ENDM
  718.  
  719. MenuFlagAddr_    MACRO
  720. \1    EQU    *+10
  721.     ENDM
  722.  
  723.  
  724.  
  725.  
  726. ;------------------------------------------------------------------------------
  727. *
  728. * EndGList_    End a list.
  729. *
  730. * USAGE:    EndGList_ name
  731. *
  732. ;------------------------------------------------------------------------------
  733.  
  734. EndGList_    MACRO
  735.     EndGadget_
  736. gtf_NUMOF_\1        EQU    gtf_NUMOF
  737. gtf_NEEDSIDCMP_\1    EQU    gtf_IDCMP
  738.     dc.w    0
  739.     ENDM
  740.  
  741.  
  742.  
  743. ;------------------------------------------------------------------------------
  744. *
  745. * GadgetsDone_    Generate strings.
  746. *
  747. * USAGE:    GadgetsDone_
  748. *
  749. ;------------------------------------------------------------------------------
  750.  
  751. GadgetsDone_    MACRO
  752.     GenStringList_    gtf_gadgets
  753.     ENDM
  754.  
  755.  
  756.  
  757. ;------------------------------------------------------------------------------
  758. *
  759. * MenuStart_    Start generation of a menu.
  760. *
  761. * USAGE:    MenuStart_
  762. *
  763. ;------------------------------------------------------------------------------
  764.  
  765. MenuStart_    MACRO
  766. gtf_MENUID    SET    1
  767. gtf_GOTONE    SET    0
  768. gtf_MENUTITNUM    SET    -1
  769. gtf_TAGFLAGS    SET    0
  770.     ENDM
  771.  
  772.  
  773. ;------------------------------------------------------------------------------
  774. *
  775. * MenuEnd_    End a menu list.
  776. *
  777. * USAGE:    MenuEnd_
  778. *
  779. ;------------------------------------------------------------------------------
  780.  
  781. MenuEnd_    MACRO
  782.     MakeMenuItem_
  783. gtf_GOTONE    SET    0
  784.     dc.w    0
  785.     ENDM
  786.  
  787.  
  788.  
  789. ;------------------------------------------------------------------------------
  790. *
  791. * MakeMenuItem_        Generate the data.
  792. *
  793. * USAGE:    MakeMenuItem_
  794. *
  795. ;------------------------------------------------------------------------------
  796.  
  797. MakeMenuItem_    MACRO
  798.     IFNE    gtf_GOTONE
  799.     dc.b    gtf_MENU
  800.     dc.b    0
  801.     dc.l    gtf_TEXT
  802.     dc.l    gtf_COMSEQ
  803.     IFEQ    gtf_MENU,1
  804.     dc.w    gtf_DISABLED/16|gtf_TOGGLED|gtf_CHECKED|gtf_CHECKIT    ;mi_Flags
  805.     else
  806.     dc.w    gtf_DISABLED|gtf_TOGGLED|gtf_CHECKED|gtf_CHECKIT
  807.     ENDIF
  808.     dc.l    gtf_MUTUAL
  809.     dc.w    gtf_MENUID
  810.     dc.w    0
  811. gtf_MENUID    SET    gtf_MENUID+1
  812.     ENDIF
  813.     
  814. gtf_GOTONE    SET    0
  815.     ENDM
  816.  
  817.  
  818.  
  819. ;------------------------------------------------------------------------------
  820. *
  821. * MenuTitle_    Title of a menu.
  822. *
  823. * USAGE:    MenuTitle_    "text"|textptr(,IDSymbol)
  824. *
  825. ;------------------------------------------------------------------------------
  826.  
  827. MenuTitle_    MACRO
  828.     MakeMenuItem_
  829. gtf_MENU    SET    1        ;title
  830. gtf_DISABLED    SET    0
  831. gtf_CHECKIT    SET    0
  832. gtf_MUTUAL    SET    0
  833. gtf_CHECKED    SET    0
  834. gtf_TOGGLED    SET    0
  835. gtf_MENUNUMBER    SET    -1
  836. gtf_MENUTITNUM    SET    gtf_MENUTITNUM+1
  837.  
  838.     IFC    '\*L(\1,1)','"'
  839.     AddString_    \1,gtf_menus,gtf_TEXT
  840.     ELSE
  841. gtf_TEXT    SETR    \1
  842.     ENDIF
  843.  
  844.     IFNC    '\2',''
  845. \2_mn    EQU    %1111111111100000|(gtf_MENUTITNUM)
  846.     ENDC
  847.  
  848. gtf_COMSEQ    SETR    0    
  849. gtf_GOTONE    SET    1
  850.     ENDM
  851.  
  852.  
  853.  
  854. ;------------------------------------------------------------------------------
  855. *
  856. * MenuItem_    An item.
  857. *
  858. * USAGE:    MenuItem_    textptr|"text"(,comseqptr|"comseq"(,IDsymbol))
  859. *
  860. ;------------------------------------------------------------------------------
  861.  
  862. MenuItem_    MACRO
  863.     MakeMenuItem_
  864. gtf_MENU    SET    2        ;item
  865. gtf_DISABLED    SET    0
  866. gtf_MUTUAL    SET    0
  867. gtf_CHECKIT    SET    0
  868. gtf_CHECKED    SET    0
  869. gtf_TOGGLED    SET    0
  870. gtf_COMSEQ    SETR    0
  871. gtf_MENUNUMBER    SET    gtf_MENUNUMBER+1
  872. gtf_MENUSUBNUMBER    SET    -1
  873.  
  874.     IFC    '\*L(\1,1)','"'
  875.     AddString_    \1,gtf_menus,gtf_TEXT
  876.     ELSE
  877. gtf_TEXT    SETR    \1
  878.     ENDIF
  879.  
  880.     IFNC    '\2',''
  881.     IFC    '\*L(\2,1)','"'
  882.     AddString_    \2,gtf_menus,gtf_COMSEQ
  883.     ELSE
  884. gtf_COMSEQ    SETR    \2
  885.     ENDIF
  886.     ENDIF
  887.  
  888.     IFNC    '\3',''
  889. \3    EQU    gtf_MENUID
  890. \3_mn    EQU    %1111100000000000|(gtf_MENUNUMBER<<5)|(gtf_MENUTITNUM)
  891. gtf_menu_\3    equ    gtf_MENUNUMBER
  892.     ENDC
  893.  
  894. gtf_GOTONE    SET    1
  895.     ENDM
  896.  
  897. MenuBar_    MACRO
  898.     MenuItem_    -1
  899.     ENDM
  900.  
  901.  
  902.  
  903.  
  904. ;------------------------------------------------------------------------------
  905. *
  906. * Exclude_    Set Mutual Exclude.
  907. *
  908. * USAGE:    Exclude_    name
  909. *
  910. ;------------------------------------------------------------------------------
  911.  
  912. Exclude_    MACRO
  913. gtf_MUTUAL    set    gtf_MUTUAL|1<<gtf_menu_\1
  914.         ENDM
  915.  
  916.  
  917.  
  918.  
  919. ;------------------------------------------------------------------------------
  920. *
  921. * MenuSubItem_    Subitem.
  922. *
  923. * USAGE:    MenuSubItem_    textptr|"text"(,comseqptr|"comseq"(,IDlabel))
  924. *
  925. ;------------------------------------------------------------------------------
  926.  
  927. MenuSubItem_    MACRO
  928.     MakeMenuItem_
  929. gtf_MENU    SET    3        ;subitem
  930. gtf_DISABLED    SET    0
  931. gtf_MUTUAL    SET    0
  932. gtf_CHECKIT    SET    0
  933. gtf_CHECKED    SET    0
  934. gtf_TOGGLED    SET    0
  935. gtf_COMSEQ    SETR    0
  936. gtf_MENUSUBNUMBER    SET    gtf_MENUSUBNUMBER+1
  937.  
  938.     IFC    '\*L(\1,1)','"'
  939.     AddString_    \1,gtf_menus,gtf_TEXT
  940.     ELSE
  941. gtf_TEXT    SETR    \1
  942.     ENDIF
  943.  
  944.     IFNC    '\2',''
  945.     IFC    '\*L(\2,1)','"'
  946.     AddString_    \2,gtf_menus,gtf_COMSEQ
  947.     ELSE
  948. gtf_COMSEQ    SETR    \2
  949.     ENDIF
  950.     ENDIF
  951.  
  952.     IFNC    '\3',''
  953. \3    EQU    gtf_MENUID
  954. \3_mn    EQU    (gtf_MENUSUBNUMBER<<11)|(gtf_MENUNUMBER<<5)|(gtf_MENUTITNUM)
  955. gtf_menu_\3    equ    gtf_MENUSUBNUMBER
  956.     ENDC
  957.  
  958. gtf_GOTONE    SET    1
  959.     ENDM
  960.  
  961. MenuSubBar_    MACRO
  962.     MenuSubItem_    -1
  963.     ENDM
  964.  
  965.  
  966.  
  967.  
  968. ;------------------------------------------------------------------------------
  969. *
  970. * MenusDone_    Generate strings.
  971. *
  972. * USAGE:    MenusDone_
  973. *
  974. ;------------------------------------------------------------------------------
  975.  
  976. MenusDone_    MACRO
  977.     GenStringList_    gtf_menus
  978.     ENDM
  979.  
  980.  
  981.  
  982. ;------------------------------------------------------------------------------
  983. *
  984. * AddHandler_    Add a handler in a gadget or menu handler list.
  985. *
  986. * USAGE:    AddHandler_    IDlabel,routine
  987. *
  988. ;------------------------------------------------------------------------------
  989.  
  990. AddHandler_    MACRO
  991.     dc.w    \1,\2-gtf_base
  992.     ENDM
  993.  
  994.  
  995.  
  996. ;------------------------------------------------------------------------------
  997. *
  998. * GenLabel_    Generate MX/CYCLE gadget label list.
  999. * EndLabel_    End a label list.
  1000. * GenLVList_    Generate LV list header.
  1001. * GenLVLabel_    Generate LV label.
  1002. *
  1003. * USAGE:    GenLabel_    "text"|label"
  1004. *        EndLabel_
  1005. *        GenLVList_    first_label,lastlabel
  1006. *        GenLVLabel_    next,prev,"string"
  1007. *
  1008. ;------------------------------------------------------------------------------
  1009.  
  1010. GenLabel_    MACRO
  1011.     IFC    '\*L(\1,1)','"'
  1012.     AddString_    \1,gtf_gadgets,gtf_TEXT
  1013.     ELSE
  1014. gtf_TEXT    SETR    \1
  1015.     ENDIF
  1016.     dc.l    gtf_TEXT
  1017.     ENDM
  1018.  
  1019. EndLabel_    MACRO
  1020.     dc.l    0
  1021.     ENDM
  1022.  
  1023. GenLVList_    MACRO
  1024.     dc.l    \1
  1025.     dc.l    0
  1026.     dc.l    \2
  1027.     ENDM
  1028.  
  1029. GenLVLabel_    MACRO
  1030.     dc.l    \1
  1031.     dc.l    \2
  1032.     dc.w    0
  1033.     dc.l    *+4
  1034.     dc.b    \3
  1035.     dc.b    0
  1036.     even
  1037.     ENDM
  1038.  
  1039.  
  1040.  
  1041.  
  1042. ;------------------------------------------------------------------------------
  1043. *
  1044. * GTFStdTags_    Generate standard tags for use of OpenScaledWindow.
  1045. * WindowKey_    Generate a WindowKey.
  1046. * GadgetKey_    Generate a GadgetKey.
  1047. *
  1048. * USAGE:    GTFStdTags_
  1049. *        WindowKey_
  1050. *        GadgetKey_
  1051. *
  1052. ;------------------------------------------------------------------------------
  1053.  
  1054. GTFStdTags_    MACRO
  1055.     dc.l    WA_InnerWidth,0
  1056.     dc.l    WA_InnerHeight,0
  1057.         ENDM
  1058.  
  1059.  
  1060. WindowKey_    MACRO
  1061.     ds.b    gfw_SIZEOF
  1062.         ENDM
  1063.  
  1064.  
  1065. GadgetKey_    MACRO
  1066.     ds.b    gfg_SIZEOF
  1067.         ENDM
  1068.  
  1069.  
  1070. GTFStdTagsZoom_    MACRO
  1071.     dc.l    WA_InnerWidth,0
  1072.     dc.l    WA_InnerHeight,0
  1073.     dc.l    WA_Zoom,0
  1074.         ENDM
  1075.  
  1076.  
  1077.  
  1078. ;------------------------------------------------------------------------------
  1079.  
  1080.     ENDIF
  1081.  
  1082.     end
  1083.